﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.Objects.DataClasses;

namespace AdministrationWindowsForms
{
    public partial class FrmRevistaEBDCadastrar : Form
    {
        public List<DELicaoEBD> licoes { get; set; }

        public FrmRevistaEBDCadastrar()
        {
            InitializeComponent();
        }

        private void FrmRevistaEBDCadastrar_Load(object sender, EventArgs e)
        {
            this.txtDataInicio.Value = DateTime.Today;
            this.txtAno.Text = DateTime.Today.Year.ToString();
            this.txtTrimestre.Text = BuscarTrimestre().ToString();
            licoes = new List<DELicaoEBD>();
        }

        private int BuscarTrimestre()
        {
            int i = DateTime.Today.Month;

            if (i < 4)
                return 1;
            else if (i < 7)
                return 2;
            else if (i < 10)
                return 3;
            else
                return 4;
        }

        private void btnAdicionar_Click(object sender, EventArgs e)
        {
            try
            {
                string erros = validarLicao();
                if (String.IsNullOrEmpty(erros))
                {
                    DELicaoEBD licao = PreencherLicao();
                    licoes.Add(licao);

                    dgvLicao.DataSource = new object();
                    dgvLicao.DataSource = licoes;

                    LimparCamposLicao();
                    this.txtTituloLicao.Focus();
                }
                else
                    MessageBox.Show(erros);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void LimparCamposLicao()
        {
            this.txtTituloLicao.Text = String.Empty;
            this.txtTextoAureo.Text = String.Empty;
            this.txtVerdadePratica.Text = String.Empty;

            this.txtSegundaTema.Text = String.Empty;
            this.txtSegundaVersiculo.Text = String.Empty;

            this.txtTercaTema.Text = String.Empty;
            this.txtTercaVersiculo.Text = String.Empty;

            this.txtQuartaTema.Text = String.Empty;
            this.txtQuartaVersiculo.Text = String.Empty;

            this.txtQuintaTema.Text = String.Empty;
            this.txtQuintaVersiculo.Text = String.Empty;

            this.txtSextaTema.Text = String.Empty;
            this.txtSextaVersiculo.Text = String.Empty;

            this.txtSabadoTema.Text = String.Empty;
            this.txtSabadoVersiculo.Text = String.Empty;
        }

        private DELicaoEBD PreencherLicao()
        {
            DELicaoEBD licao = new DELicaoEBD();
            licao.Numero = Convert.ToInt16(dgvLicao.Rows.Count + 1);
            licao.Data = txtDataInicio.Value.AddDays(7 * (licao.Numero - 1));
            licao.Titulo = txtTituloLicao.Text;
            licao.TextoAureo = txtTextoAureo.Text;
            licao.VerdadePratica = txtVerdadePratica.Text;
            licao.SegundaVersiculo = txtSegundaVersiculo.Text;
            licao.SegundaTema = txtSegundaTema.Text;

            licao.TercaVersiculo = txtTercaVersiculo.Text;
            licao.TercaTema = txtTercaTema.Text;

            licao.QuartaVersiculo = txtQuartaVersiculo.Text;
            licao.QuartaTema = txtQuartaTema.Text;

            licao.QuintaVersiculo = txtQuintaVersiculo.Text;
            licao.QuintaTema = txtQuintaTema.Text;

            licao.SextaVersiculo = txtSextaVersiculo.Text;
            licao.SextaTema = txtSextaTema.Text;

            licao.SabadoVersiculo = txtSabadoVersiculo.Text;
            licao.SabadoTema = txtSabadoTema.Text;

            return licao;
        }

        private string validarLicao()
        {
            StringBuilder erros = new StringBuilder();

            if (String.IsNullOrEmpty(txtTituloLicao.Text))
                erros.AppendLine("Campo 'Título' obrigatório");

            if (String.IsNullOrEmpty(txtTextoAureo.Text))
                erros.AppendLine("Campo 'Texto Áureo' obrigatório");

            if (String.IsNullOrEmpty(txtVerdadePratica.Text))
                erros.AppendLine("Campo 'Verdade Prática' obrigatório");

            if (String.IsNullOrEmpty(txtSegundaTema.Text) || String.IsNullOrEmpty(txtSegundaVersiculo.Text))
                erros.AppendLine("Campo 'Segunda' obrigatório");

            if (String.IsNullOrEmpty(txtTercaTema.Text) || String.IsNullOrEmpty(txtTercaVersiculo.Text))
                erros.AppendLine("Campo 'Terca' obrigatório");

            if (String.IsNullOrEmpty(txtQuartaTema.Text) || String.IsNullOrEmpty(txtQuartaVersiculo.Text))
                erros.AppendLine("Campo 'Quarta' obrigatório");

            if (String.IsNullOrEmpty(txtQuintaTema.Text) || String.IsNullOrEmpty(txtQuintaVersiculo.Text))
                erros.AppendLine("Campo 'Quinta' obrigatório");

            if (String.IsNullOrEmpty(txtSextaTema.Text) || String.IsNullOrEmpty(txtSextaVersiculo.Text))
                erros.AppendLine("Campo 'Sexta' obrigatório");

            if (String.IsNullOrEmpty(txtSabadoTema.Text) || String.IsNullOrEmpty(txtSabadoVersiculo.Text))
                erros.AppendLine("Campo 'Sábado' obrigatório");

            return erros.ToString();
        }

        private void btnCadastrar_Click(object sender, EventArgs e)
        {
            try
            {
                DERevistaEBD revista = new DERevistaEBD();
                revista.Ano = short.Parse(this.txtAno.Text);
                revista.Titulo = this.txtTitulo.Text;
                revista.SubTitulo = this.txtSubTitulo.Text;
                revista.Trimestre = short.Parse(this.txtTrimestre.Text);
                revista.Apresentacao = String.Empty;

                revista.TBLicaoEBDs = new EntityCollection<DELicaoEBD>();
                licoes.ForEach(l => revista.TBLicaoEBDs.Add(l));

                using (ministerioprosperid1Entities banco = new ministerioprosperid1Entities())
                {
                    banco.AddToDERevistaEBDs(revista);
                    banco.SaveChanges();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private string validarRevista()
        {
            StringBuilder erros = new StringBuilder();

            if (String.IsNullOrEmpty(txtTitulo.Text))
                erros.AppendLine("Campo 'Título' obrigatório");

            if (String.IsNullOrEmpty(txtAno.Text))
                erros.AppendLine("Campo 'Ano' obrigatório");

            if (String.IsNullOrEmpty(txtTrimestre.Text))
                erros.AppendLine("Campo 'Trimestre' obrigatório");

            if (String.IsNullOrEmpty(txtSubTitulo.Text))
                erros.AppendLine("Campo 'Sub Título' obrigatório");

            return erros.ToString();
        }
    }
}
